<?
	// Estos parametros son para el Template
	$this->aDatos[$cTemplateId][aParametros] = array( 
								array( 'aModos', 'Modo'), 
								array( 'r', 'Rotulo'), 
								array( 'f', 'Funcion', 'SELECT ncFuncion, cdFuncion FROM gcFuncion', 'f'), // los sevicios de un producto turistico
								array( 's', 'Servicio', 'SELECT ncServicio, cdServicio FROM gcServicio', 's'), // los servicios de un producto turistico
								array( 'p', 'Producto', 'SELECT ncProducto, cdProducto FROM gtProductoTuristico', 'p'),  // los servicios de un producto turistico
								array( 'u', 'Ubicacion', 'SELECT ncUbicacion, cdUbicacion FROM acUbicacion WHERE ncPais = 8 AND ncUbicacionPadre= 25', 'u'), // los servicios de ese o estos  barrios
								array( 'e', 'Segmento', 'SELECT ncSegmento, cdSegmento FROM gtSegmento', 'e'), // los sercivios para un determinado segmento turistico
								array( 'c', 'Categoria', 'SELECT ncCategoriaEstablecimiento, cdCategoriaEstablecimiento FROM gcCategoriaEstablecimiento', 'c'), // los servicios de esa categoria
								array( 'v', 'Valoracion', 'SELECT ncValoracion, cdValoracion FROM gcValoracion', 'v'), // los atractivos de un producto turistico
								array( 'buscar', 'Filtro Busqueda'), // los servicios de esa categoria
							);	
	include( PATH_MODULES . 'portal/controller_ini.php');
	$ncUbicacionFiltro = $this->aDatos[$cTemplateId][u];
	$ncFuncionFiltro = $this->aDatos[$cTemplateId][f];
	$ncCategoriaEstablecimientoFiltro  = $this->aDatos[$cTemplateId][c];
	$ncServicioFiltro = $this->aDatos[$cTemplateId][s];
	$ncProductoFiltro = $this->aDatos[$cTemplateId][p];
	$ncSegmentoFiltro = $this->aDatos[$cTemplateId][e];
	$ncRotuloFiltro = $this->aDatos[$cTemplateId][r];
	
	$this->loadTemplatePage('servicio', 'servicio' );
	$ncFuncion = $this->aDatos['servicio'][ncFuncion];
	
	$oModPortal =& loadModule('portal');
	
	$oModPortal->aDatos[armador][cSubTitulo] = $cSubTitulo ? $cSubTitulo : getParam( 'cSubTitulo','Servicios');
	$oModPortal->aDatos[armador][cUrlBase] = '?mo=portal&amp;ac=componentes&amp;ncMenu=' . getParam('ncMenu') .   $this->aDatos['servicio'][cThisUrlParametros];
	$oModPortal->aDatos[armador][buscar] = $buscar;
	$oModPortal->aDatos[armador][cArmadorVariable] = 'servicios';
	$oModPortal->aDatos[armador][cArmadorLink] = '?mo=' . $this->cModule . '&amp;ac=ficha_establecimiento&amp;rf=action&amp;aModos=124&amp;ncEstablecimiento=';
	$oModPortal->aDatos[armador][cArmadorQueryFavoritos] = 'Select cdEstablecimiento FROM gtEstablecimiento WHERE ncEstablecimiento = ';
	$oModPortal->aDatos[armador][cArmadorUrlFiltro] = '?mo=' . $this->cModule . '&amp;ac=servicio_07&amp;rf=action' . $this->aDatos['servicio'][cThisUrlParametros];
	$oModPortal->aDatos[armador][cArmadorItems] = 'establecimientos';
	
	$nOpcion = getParam('op');
	$this->setTarget( "resultados" );
	$oModPortal->aDatos['componentes'][cTitulo] = mostrar_termino( LBL_Servicios );
	
	$oModPortal->aDatos[armador][aCortes] = array();
	$oModPortal->aDatos[armador][cSql] = $cSqlEstablecimientos = $this->aDatos['servicio'][cSql];
	$oModPortal->aDatos[armador][nqResultados]= $this->aDatos['servicio'][nqResultados];	
	
	// Barrios
	if ( !$ncUbicacionFiltro )
	{
		$oModPortal->aDatos[armador][aCortes][ncUbicacion] =  array ( cTitulo => mostrar_termino( LBL_Barrios ) , bAbierto => true, nTipo => 2 ) ;
		$oModPortal->aDatos[armador][aCortes][ncUbicacion][cSqlCorte] = "SELECT ncUbicacion, cdUbicacion FROM acUbicacion WHERE ncUbicacion ";
		$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncUbicacion][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncUbicacion IN ', 'ncUbicacion NOT IN ', $cSqlEstablecimientos);
		$oModPortal->aDatos[armador][aCortes][ncUbicacion][cSql] = "SELECT Ubi.ncUbicacion as id, Ubi.cdUbicacion as item, count(*) as cant
					FROM acUbicacion as Ubi
					JOIN atDomicilio as Dom ON Dom.ncUbicacion = Ubi.ncUbicacion
					JOIN gtEstablecimiento as Est ON Est.ncDomicilio = Dom.ncDomicilio
					WHERE Ubi.ncPais = 8 AND Ubi.ncUbicacionPadre = 25 
						AND Est.ncEstablecimiento IN ( $cSqlResultados ) ";
		$oModPortal->aDatos[armador][aCortes][ncUbicacion][cSql] .=	" GROUP BY Ubi.ncUbicacion, Ubi.cdUbicacion HAVING COUNT(*) > 0";
	} else
		$oModPortal->aDatos['componentes'][cTitulo] = $this->oDatabase->getData("SELECT cdUbicacion FROM acUbicacion WHERE ncPais = 8 AND ncUbicacion = $ncUbicacionFiltro") ;	// Funciones
	if ( $ncRotuloFiltro)
		$oModPortal->aDatos['componentes'][cTitulo] = $this->oDatabase->getData("SELECT cdRotulo FROM gtRotuloEstablecimiento WHERE ncRotulo IN ( $ncRotuloFiltro ) ") ;	// Funciones
	$bMultiFuncion = strpos($ncFuncionFiltro, ',') ;
	if ( $bMultiFuncion ) 
	{
		$oModPortal->aDatos[armador][aCortes][ncFuncion] =  array ( cTitulo => mostrar_termino( LBL_Directorio ) , bAbierto => true, nTipo => 1 ) ;
		$oModPortal->aDatos[armador][aCortes][ncFuncion][cSqlCorte] = "SELECT ncFuncion, cdFuncion FROM gcFuncion WHERE ncFuncion IN ( $ncFuncion)  AND ncFuncion ";
		$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncFuncion][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncFuncion IN ', 'ncFuncion NOT IN ', $cSqlEstablecimientos);
		$oModPortal->aDatos[armador][aCortes][ncFuncion][cSql] = "SELECT Par.ncFuncion as id, cdFuncion as item, count(*) as cant
					FROM gcFuncion Par
					JOIN gtEstablecimientoFuncion Tab ON Tab.ncFuncion=Par.ncFuncion
					WHERE Tab.ncFuncion IN ( $ncFuncion)  AND  Tab.ncEstablecimiento IN ( $cSqlResultados ) ";
		$oModPortal->aDatos[armador][aCortes][ncFuncion][cSql] .= " GROUP BY Par.ncFuncion, cdFuncion HAVING COUNT(*) > 0";
	} else {
		if ( !$ncFuncionFiltro )
		{
			$oModPortal->aDatos[armador][aCortes][ncFuncion] =  array ( cTitulo => mostrar_termino( LBL_Directorio ) , bAbierto => true, nTipo => 1 ) ;
			$oModPortal->aDatos[armador][aCortes][ncFuncion][cSqlCorte] = "SELECT ncFuncion, cdFuncion FROM gcFuncion WHERE ncFuncion ";
			$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncFuncion][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncFuncion IN ', 'ncFuncion NOT IN ', $cSqlEstablecimientos);
			$oModPortal->aDatos[armador][aCortes][ncFuncion][cSql] = "SELECT Par.ncFuncion as id, cdFuncion as item, count(*) as cant
						FROM gcFuncion Par
						JOIN gtEstablecimientoFuncion Tab ON Tab.ncFuncion=Par.ncFuncion
						WHERE Tab.ncEstablecimiento IN ( $cSqlResultados ) ";
			$oModPortal->aDatos[armador][aCortes][ncFuncion][cSql] .= " GROUP BY Par.ncFuncion, cdFuncion HAVING COUNT(*) > 0";
		} else
			$oModPortal->aDatos['componentes'][cTitulo] = extractLanguage( $this->oDatabase->getData("SELECT cdFuncion FROM gcFuncion WHERE ncFuncion = $ncFuncionFiltro") , $this->getLanguage() );
	}
	// Categorias
	if ( $ncFuncion  && !$bMultiFuncion)
	{
		if ( !$ncCategoriaEstablecimientoFiltro )
		{
			$oModPortal->aDatos[armador][aCortes][ncCategoriaEstablecimiento] =  array ( cTitulo => mostrar_termino( LBL_Categorias), bAbierto => true, nTipo => 2 , cOrder => 'Par.ncCategoriaEstablecimiento' ) ;
			$oModPortal->aDatos[armador][aCortes][ncCategoriaEstablecimiento][cSqlCorte] = "SELECT ncCategoriaEstablecimiento, cdCategoriaEstablecimiento FROM gcCategoriaEstablecimiento WHERE ncFuncion IN ( $ncFuncion) AND ncCategoriaEstablecimiento ";
			$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncCategoriaEstablecimiento][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncCategoriaEstablecimiento IN ', 'ncCategoriaEstablecimiento NOT IN ', $cSqlEstablecimientos);
			$oModPortal->aDatos[armador][aCortes][ncCategoriaEstablecimiento][cSql] = "SELECT Par.ncCategoriaEstablecimiento as id, cdCategoriaEstablecimiento as item, count(*) as cant
						FROM gcCategoriaEstablecimiento Par
						JOIN gtEstablecimientoFuncion Tab ON Tab.ncCategoriaEstablecimiento=Par.ncCategoriaEstablecimiento AND Tab.ncFuncion = Par.ncFuncion AND Tab.ncFuncion IN ($ncFuncion)
						WHERE Tab.ncEstablecimiento IN ( $cSqlResultados ) ";
			$oModPortal->aDatos[armador][aCortes][ncCategoriaEstablecimiento][cSql] .= " GROUP BY Par.ncCategoriaEstablecimiento, cdCategoriaEstablecimiento HAVING COUNT(*) > 0";
		} else
			$oModPortal->aDatos[armador][aCortes][ncCategoriaEstablecimiento][cTitulo] = $this->oDatabase->getData("SELECT cdCategoriaEstablecimiento  FROM gcCategoriaEstablecimiento WHERE ncCategoriaEstablecimiento  = $ncCategoriaEstablecimientoFiltro ");
	}
	/*
	// Servicios
	if ( !$ncServicioFiltro )
	{
		$oModPortal->aDatos[armador][aCortes][ncServicio] =  array ( cTitulo => mostrar_termino( LBL_Servicios), bAbierto => true, nTipo => 2 ) ;
		$oModPortal->aDatos[armador][aCortes][ncServicio][cSqlCorte] = "SELECT ncServicio, cdServicio FROM gcServicio WHERE ncServicio ";
		$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncServicio][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncServicio IN ', 'ncServicio NOT IN ', $cSqlEstablecimientos);
		$oModPortal->aDatos[armador][aCortes][ncServicio][cSql] = "SELECT Par.ncServicio as id, cdServicio as item, count(*) as cant
					FROM gcServicio Par
					JOIN gtEstablecimientoServicio Tab ON Tab.ncServicio=Par.ncServicio
					WHERE Tab.ncEstablecimiento IN ( $cSqlResultados ) ";
		$oModPortal->aDatos[armador][aCortes][ncServicio][cSql] .= " GROUP BY Par.ncServicio, cdServicio HAVING COUNT(*) > 0";
	} else
		$oModPortal->aDatos['componentes'][cTitulo] = extractLanguage( $this->oDatabase->getData("SELECT cdServicio FROM gcServicio WHERE ncServicio = $ncServicioFiltro") , $this->getLanguage() );
	 
	// Producto
	if ( !$ncProductoFiltro )
	{
		$oModPortal->aDatos[armador][aCortes][ncProducto] =  array ( cTitulo => mostrar_termino( LBL_Productos), bAbierto =>true, nTipo => 2 ) ;
		$oModPortal->aDatos[armador][aCortes][ncProducto][cSqlCorte] = "SELECT ncProducto, cdProducto FROM gtProductoTuristico WHERE ncProducto ";
		$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncProducto][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncProducto IN ', 'ncProducto NOT IN ', $cSqlEstablecimientos);
		$oModPortal->aDatos[armador][aCortes][ncProducto][cSql] = "SELECT Par.ncProducto as id, cdProducto as item, count(*) as cant
					FROM gtProductoTuristico Par
					JOIN gtProductoEstablecimiento Tab ON Tab.ncProducto=Par.ncProducto
					WHERE Tab.ncEstablecimiento IN ( $cSqlResultados ) ";
		$oModPortal->aDatos[armador][aCortes][ncProducto][cSql] .= " GROUP BY Par.ncProducto, cdProducto HAVING COUNT(*) > 0";
	} else
		$oModPortal->aDatos['componentes'][cTitulo] = extractLanguage( $this->oDatabase->getData( "SELECT cdProducto FROM gtProductoTuristico WHERE ncProducto = $ncProductoFiltro") , $this->getLanguage() );
	*/
	if ( !$ncValoracionFiltro )
	{
		$oModPortal->aDatos[armador][aCortes][ncValoracion] =  array ( cTitulo => mostrar_termino( LBL_Tipos), bAbierto => false, nTipo => 1 ) ;
		$oModPortal->aDatos[armador][aCortes][ncValoracion][cSqlCorte] = "SELECT ncValoracion, cdValoracion FROM gcValoracion WHERE ncValoracion ";
		$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncValoracion][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncValoracion IN ', 'ncValoracion NOT IN ', $cSqlEstablecimientos);
		$oModPortal->aDatos[armador][aCortes][ncValoracion][cSql] = "SELECT TAt.ncValoracion as id, cdValoracion as item, count(*) as cant
					FROM gcValoracion TAt
					JOIN gtAtractivoValoracion Atr ON Atr.ncValoracion=TAt.ncValoracion
					JOIN gtAtractivo At ON At.ncAtractivo=Atr.ncAtractivo
					WHERE At.ncEstablecimiento IN ( $cSqlResultados ) ";
		$oModPortal->aDatos[armador][aCortes][ncValoracion][cSql] .= " GROUP BY TAt.ncValoracion, cdValoracion HAVING COUNT(*) > 0";	
	} else
		$oModPortal->aDatos['componentes'][cTitulo] = extractLanguage( $this->oDatabase->getData("SELECT cdValoracion FROM gcValoracion WHERE ncValoracion = $ncValoracionFiltro") , $this->getLanguage() );
	
	// Perfil 
	if ( !$ncSegmentoFiltro )
	{
		$oModPortal->aDatos[armador][aCortes][ncSegmento]=  array ( cTitulo => mostrar_termino( LBL_Perfiles), bAbierto => false, nTipo => 1 ) ;
		$oModPortal->aDatos[armador][aCortes][ncSegmento][cSqlCorte] = "SELECT ncSegmento, cdSegmento FROM gtSegmento WHERE ncSegmento ";
		$cSqlResultados =  $oModPortal->aDatos[armador][aCortes][ncSegmento][nTipo] == 1 ?  $cSqlEstablecimientos: str_replace('ncSegmento IN ', 'ncSegmento NOT IN ', $cSqlEstablecimientos);
		$oModPortal->aDatos[armador][aCortes][ncSegmento][cSql] = "SELECT Par.ncSegmento as id, cdSegmento as item, count(*) as cant
					FROM gtSegmento Par
					JOIN gtProductoSegmento SPr ON SPr.ncSegmento = Par.ncSegmento
					JOIN gtProductoEstablecimiento Tab ON Tab.ncProducto=SPr.ncProducto					
					WHERE Tab.ncEstablecimiento IN ( $cSqlResultados ) ";
		$oModPortal->aDatos[armador][aCortes][ncSegmento][cSql] .= "GROUP BY Par.ncSegmento, cdSegmento HAVING COUNT(*) > 0";	
	} else
		$oModPortal->aDatos['componentes'][cTitulo] = extractLanguage( $this->oDatabase->getData("SELECT cdSegmento FROM gtSegmento WHERE ncSegmento = $ncSegmentoFiltro") , $this->getLanguage() );
	
	$oModPortal->aDatos['componentes'][cTitulo] = $oModPortal->aDatos[armador][nqResultados]. ' ' . strtolower($oModPortal->aDatos['componentes'][cTitulo]) ;
	// Si es un ajax
	if ( $nOpcion  ) 
	{
		if ( $nOpcion  < 10 ) 
			include ( PATH_MODULES .'portal/templates/armador_filtro.php' );
		elseif ( $nOpcion  < 20 ) 
			include ( PATH_MODULES .'portal/templates/armador_parametros.php' );
		else
			include ( PATH_MODULES .'portal/templates/armador_resultado.php' );
		exit();
	}
	
?>